package com.kaifamiao.list;

import java.util.List;
import java.util.ListIterator;
import java.util.Vector;


/**
 * Vector具有一般List的特点: 有序、可重复
 * 1、Vector内部采用数组存放数据
 * 2、Vector中可以包含null元素
 * 3、Vector是线程安全的
 * 4、由 Vector 的 iterator 和 listIterator 方法所返回的迭代器是快速失败的
 */
public class VectorTest1 {

    public static void main(String[] args) {
        Vector<String> vector = new Vector<>( 5, 5 );
        System.out.println( "capacity: " + vector.capacity() + ", size: " + vector.size() );
        vector.add( "吉吉国王" );
        vector.add( "毛毛" );
        vector.addElement( "翠花" );
        vector.addAll( 2 , List.of( "熊大", "熊二" ) );
        System.out.println( vector );
        System.out.println( "capacity: " + vector.capacity() + ", size: " + vector.size() );

        vector.add( "涂涂" );
        System.out.println( "capacity: " + vector.capacity() + ", size: " + vector.size() );

        vector.add( "涂涂" );
        vector.add( null );
        System.out.println( vector );

        ListIterator<String> itor = vector.listIterator();
        while ( itor.hasNext() ) {
            String name = itor.next();
            if( "吉吉国王".equals( name ) ) {
                // itor.remove(); // 赞成使用
                // vector.remove( "吉吉国王" ); // ConcurrentModificationException
                itor.add( "美猴王" ); // 赞成使用
                // vector.add( "美猴王" ); // ConcurrentModificationException
            }
        }

        System.out.println( vector );

    }

}
